﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Linq;
using System.Data.Linq;
using QLTVNEW.Properties;
using System.Windows.Forms;
using DevComponents.DotNetBar;

namespace QLTVNEW
{
    public partial class frmSach : DevComponents.DotNetBar.Office2007Form
    {
        public frmSach()
        {
            InitializeComponent();
            DataLoadOptions dlo = new DataLoadOptions();
            dlo.LoadWith<SACH>(s => s.THELOAI);
            dlo.LoadWith<SACH>(s => s.TACGIA1);
            dlo.LoadWith<SACH>(s => s.NHAXUATBAN1);
            dlo.LoadWith<SACH>(s => s.TINHTRANG);
            db.LoadOptions = dlo;

        }

        QLTVDataContext db = new QLTVDataContext();
        SACH tbsach = new SACH();
        NHAXUATBAN nxb = new NHAXUATBAN();
        TINHTRANG ttr = new TINHTRANG();
        TACGIA tg = new TACGIA();
        THELOAI tl = new THELOAI();

        #region 'LT'
        void txtReadOnly(bool a)
        {
            txtMa.ReadOnly = a;
            txtTen.ReadOnly = a;
            txtNam.ReadOnly=a;
            txtKhoangCach.ReadOnly=a;
            txtSoLuong.ReadOnly=a;
        }

        void btnThem(bool a)
        {
            btnupdate.Enabled = a;
            btndel.Enabled = a;
        }

        void btnSua(bool a)
        {
            btninsert.Enabled = a;
            btndel.Enabled = a;
        }

        void ThemCancel()
        {
            btninsert.Image = Resources.Cancel;
            superTooltip1.SetSuperTooltip(btninsert, new SuperTooltipInfo("Huỷ Bỏ Thao Tác Thêm.", "", "", null, null, eTooltipColor.Lemon, true, true, new System.Drawing.Size(140, 21)));
        }
        void ThemOK()
        {
            btninsert.Image = Resources.add1_;
            superTooltip1.SetSuperTooltip(btninsert, new SuperTooltipInfo("Thêm Sách.","","<font color=\"#ED1C24\"><u>Lưu ý:</u></font><br></br>\r\nKhông Cần Nhập Mã Sách.<br></br>Không Cần Chọn Tình Trạng Sách.", null, null, DevComponents.DotNetBar.eTooltipColor.Lemon, true, true, new System.Drawing.Size(120, 90)));
        }

        void SuaCancel()
        {
            btnupdate.Image = Resources.Cancel;
            superTooltip1.SetSuperTooltip(btnupdate, new SuperTooltipInfo("Huỷ Bỏ Thao Tác Sửa.", "", "", null, null, eTooltipColor.Lemon, true, true, new System.Drawing.Size(130, 21)));
        }

        void SuaOK()
        {
            btnupdate.Image = Resources.edit;
            superTooltip1.SetSuperTooltip(btnupdate, new SuperTooltipInfo("Sửa Thông Tin Sách.", "", "", null, null, eTooltipColor.Lemon, true, true, new System.Drawing.Size(130, 21)));
        }

        void LoadDau()
        {

            txtMa.Text = GVW.Rows[0].Cells[0].Value.ToString().Trim();
            txtTen.Text = GVW.Rows[0].Cells[1].Value.ToString().Trim();
            cbxTheLoai.Text = GVW.Rows[0].Cells[2].Value.ToString().Trim();
            cbxTacGia.Text = GVW.Rows[0].Cells[3].Value.ToString().Trim();
            cbxNXB.Text = GVW.Rows[0].Cells[4].Value.ToString().Trim();
            txtNam.Text = GVW.Rows[0].Cells[5].Value.ToString().Trim();
            mktNgayNhap.Text = GVW.Rows[0].Cells[6].Value.ToString().Trim();
            txtKhoangCach.Text = GVW.Rows[0].Cells[7].Value.ToString().Trim();
            txtSoLuong.Text = GVW.Rows[0].Cells[8].Value.ToString().Trim();
            cbxTinhTrang.Text = GVW.Rows[0].Cells[9].Value.ToString().Trim();
        }

        void LoadGridView()
        {
            var query = from sa in db.SACHes
                        join tg in db.TACGIAs on sa.TacGia equals tg.MaTacGia
                        join tbnxb in db.NHAXUATBANs on sa.NhaXuatBan equals tbnxb.MaNXB
                        join tbtr in db.TINHTRANGs on sa.MaTinhTrang equals tbtr.MaTinhTrang
                        join tbtl in db.THELOAIs on sa.MaTheLoai equals tbtl.MaTheLoai
                        select new
                        {
                            sa.MaSach,
                            sa.TenSach,
                            tbtl.TenTheLoai,
                            tg.TenTacGia,
                            tbnxb.TenNXB,
                            sa.NamXuatBan,
                            sa.NgayNhap,
                            sa.KhoangCachXuatBan,
                            sa.SoLuong,
                            tbtr.TenTinhTrang

                        };
            GVW.DataSource = query;
        }

        #endregion
        private void frmSach_Load(object sender, EventArgs e)
        {
            LoadGridView();
            tl.LoadComboBox(cbxTheLoai);
            tg.LoadComboBox(cbxTacGia);
            nxb.LoadComboBox(cbxNXB);
            ttr.LoadComboBox(cbxTinhTrang);
            mktNgayNhap.Text = DateTime.Now.ToString("dd/MM/yyyy");
            LoadDau();
        }

        private void btninsert_Click(object sender, EventArgs e)
        {
            if (btnsave.Enabled == false)
            {
                btnclear.PerformClick();
                txtReadOnly(false);
                txtMa.ReadOnly = true;
                btnThem(false);
                ThemCancel();
                btnsave.Enabled = true;
                txtTen.Focus();
                lblTinhTrang.Visible = false;
                cbxTinhTrang.Visible = false;
            }
            else
            {
                txtReadOnly(true);
                btnThem(true);
                ThemOK();
                btnsave.Enabled = false;
                lblTinhTrang.Visible = true;
                cbxTinhTrang.Visible = true;
            }
        }

        private void btnupdate_Click(object sender, EventArgs e)
        {
            if (btnsave.Enabled == false)
            {
                txtReadOnly(false);
                txtMa.ReadOnly = true;
                SuaCancel();
                btnSua(false);
                btnsave.Enabled = true;
            }
            else
            {
                txtReadOnly(true);
                SuaOK();
                btnSua(true);
                btnsave.Enabled = false;
            }
        }

        private void btncancel_Click(object sender, EventArgs e)
        {
            this.AutoValidate = AutoValidate.Disable;
            this.Close();
        }

        private void btnclear_Click(object sender, EventArgs e)
        {
            txtReadOnly(false);
            foreach (Control ctr in groupBox1.Controls)
            {
                if (ctr is TextBox || ctr is ComboBox)
                {
                    
                    ctr.Text = "";
                    labelX1.Focus();
                    mktNgayNhap.Text = DateTime.Now.ToString("dd/MM/yyyy");
                }
            }
        }

        private void cbxTheLoai_SelectedIndexChanged(object sender, EventArgs e)
        {
            cbxTacGia.Focus();
        }

        private void cbxTacGia_SelectedIndexChanged(object sender, EventArgs e)
        {
            cbxNXB.Focus();
        }

        private void cbxNXB_SelectedIndexChanged(object sender, EventArgs e)
        {
            txtNam.Focus();    
        }

        private void txtNam_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(),"\\d+")&& !Char.IsControl(e.KeyChar))
            {
                
                e.Handled = true;
                MessageBox.Show("Bạn Chỉ Được Nhập Số","Thông Báo",MessageBoxButtons.OK,MessageBoxIcon.Warning);
            }
        }

        private void txtSoLuong_KeyPress(object sender, KeyPressEventArgs e)
        {
            if (!System.Text.RegularExpressions.Regex.IsMatch(e.KeyChar.ToString(),"\\d+") && !Char.IsControl(e.KeyChar))
            {
                e.Handled = true;
                MessageBox.Show("Bạn Chỉ Được Nhập Số","Thông Báo",MessageBoxButtons.OK,MessageBoxIcon.Warning);
            }
        }

        private void mktNgayNhap_KeyUp(object sender, KeyEventArgs e)
        {
            if (mktNgayNhap.MaskFull)
            {
                try
                {
                    DateTime.ParseExact(mktNgayNhap.Text, "dd/MM/yyyy", null);
                }
                catch
                {
                    MessageBox.Show("Ngày Nhập Không Hợp Lệ", "Thông Báo",MessageBoxButtons.OK,MessageBoxIcon.Warning);
                    mktNgayNhap.ResetText();
                }
            }
        }

        private void btnsave_Click(object sender, EventArgs e)
        {
            if (btnupdate.Enabled==false)
            {
                string err = "";

                if (txtSoLuong.Text=="" )
                {
                    MessageBox.Show("Bạn Chưa Nhập Đầy Đủ Thông Tin", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                    return;
                }
                else
                {
                    if (int.Parse(txtSoLuong.Text) == 0)
                    {
                        MessageBox.Show("Số Lượng Sách Phải Khác 0", "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Warning);
                        return;
                    }
                    else
                    {
                        db.uspCRUDSACH('t', 0, txtTen.Text, cbxTheLoai.SelectedValue.ToString(), int.Parse(cbxTacGia.SelectedValue.ToString()), int.Parse(cbxNXB.SelectedValue.ToString()), txtNam.Text, mktNgayNhap.Text, txtKhoangCach.Text, int.Parse(txtSoLuong.Text), 1, ref err);
                        MessageBox.Show(err.ToString(), "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        db.SubmitChanges();
                    }
                }
                btnThem(true);
                ThemOK();
                btnsave.Enabled = false;
                txtReadOnly(true);
                LoadGridView();
                lblTinhTrang.Visible = true;
                cbxTinhTrang.Visible = true;
            }
            if (btninsert.Enabled==false)
            {
                SACH tbsa = db.SACHes.Where(s => s.MaSach ==int.Parse(txtMa.Text)).SingleOrDefault<SACH>();
                if (tbsa!=null)
                {
                    try
                    {
                        string err = "";
                        db.uspCRUDSACH('t', int.Parse(txtMa.Text), txtTen.Text, cbxTheLoai.SelectedValue.ToString(), int.Parse(cbxTacGia.SelectedValue.ToString()), int.Parse(cbxNXB.SelectedValue.ToString()), txtNam.Text, mktNgayNhap.Text, txtKhoangCach.Text, int.Parse(txtSoLuong.Text), int.Parse(cbxTinhTrang.SelectedValue.ToString()), ref err);
                        MessageBox.Show(err.ToString(), "Thông Báo", MessageBoxButtons.OK, MessageBoxIcon.Information);
                        btnSua(true);
                        SuaOK();
                        btnsave.Enabled = false;
                        txtReadOnly(true);
                        LoadGridView();

                    }
                    catch(Exception ex)
                    {
                        MessageBox.Show(ex.Message);
                    }
                }
                else
                    MessageBox.Show("Sách Không Tồn Tại","Thông Báo",MessageBoxButtons.OK,MessageBoxIcon.Warning);
            }
        }

        private void btndel_Click(object sender, EventArgs e)
        {
            if (txtMa.Text!="")
            {
                if (MessageBox.Show("Bạn Có Muốn Xóa Không","Thông Báo",MessageBoxButtons.YesNo,MessageBoxIcon.Question)==DialogResult.Yes)
                {
                    string err = "";
                    db.uspCRUDSACH('x', int.Parse(txtMa.Text), txtTen.Text, cbxTheLoai.SelectedValue.ToString(), int.Parse(cbxTacGia.SelectedValue.ToString()), int.Parse(cbxNXB.SelectedValue.ToString()), txtNam.Text, mktNgayNhap.Text, txtKhoangCach.Text, int.Parse(txtSoLuong.Text), int.Parse(cbxTinhTrang.SelectedValue.ToString()), ref err);
                    MessageBox.Show(err.ToString(),"Thông Báo",MessageBoxButtons.OK,MessageBoxIcon.Information);
                    db.SubmitChanges();
                    LoadGridView();
                }
            } 
            else
            {
                MessageBox.Show("Chưa Nhập Mã Sách","Thông Báo",MessageBoxButtons.OK,MessageBoxIcon.Warning);
            }
        }

        int dong;
        private void GVW_CellClick(object sender, DataGridViewCellEventArgs e)
        {
            try
            {
                dong = e.RowIndex;
                txtMa.Text = GVW.Rows[dong].Cells[0].Value.ToString().Trim();
                txtTen.Text = GVW.Rows[dong].Cells[1].Value.ToString().Trim();
                cbxTheLoai.Text = GVW.Rows[dong].Cells[2].Value.ToString().Trim();
                cbxTacGia.Text = GVW.Rows[dong].Cells[3].Value.ToString().Trim();
                cbxNXB.Text = GVW.Rows[dong].Cells[4].Value.ToString().Trim();
                txtNam.Text = GVW.Rows[dong].Cells[5].Value.ToString().Trim();
                mktNgayNhap.Text = GVW.Rows[dong].Cells[6].Value.ToString().Trim();
                txtKhoangCach.Text = GVW.Rows[dong].Cells[7].Value.ToString().Trim();
                txtSoLuong.Text = GVW.Rows[dong].Cells[8].Value.ToString().Trim();
                cbxTinhTrang.Text = GVW.Rows[dong].Cells[9].Value.ToString().Trim();
            }
            catch
            {
                return;	
            }
        }

        private void frmSach_FormClosing(object sender, FormClosingEventArgs e)
        {
            this.AutoValidate = AutoValidate.Disable;
        }

        private void txtNam_Leave(object sender, EventArgs e)
        {
        }

        private void txtTen_Leave(object sender, EventArgs e)
        {
           
        }

        private void txtSoLuong_TextChanged(object sender, EventArgs e)
        {

        }
    }
}
